/**
 * 将文本写入系统剪贴板
 * @param text 要复制的文本内容
 * @returns Promise<boolean> - 复制成功返回 true，失败返回 false（或抛出错误，根据配置）
 * @description 优先使用现代 Clipboard API，不支持时降级到 document.execCommand
 */
import Message from '$lib/components/Feedback/Message/message';
export const copyToClipboard = async (text: string): Promise<boolean> => {
    // 边界条件：文本为空时直接返回失败
    if (!text.trim()) {
        Message.warning('复制失败：文本内容为空');
        return false;
    }

    try {
        // 方案1：现代浏览器 Clipboard API（推荐，异步无阻塞）
        if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {
            await navigator.clipboard.writeText(text);
            return true;
        }

        // 方案2：降级到 document.execCommand（旧浏览器兼容，需要 DOM 操作）
        // 创建临时 textarea 用于复制（不可见，不影响布局）
        const textarea = document.createElement('textarea');
        textarea.value = text;
        textarea.style.position = 'fixed'; // 脱离文档流，避免滚动影响
        textarea.style.left = '-9999px';
        textarea.style.opacity = '0';
        document.body.appendChild(textarea);

        // 选中文本并执行复制命令
        textarea.select();
        textarea.setSelectionRange(0, text.length); // 兼容移动设备
        const success = document.execCommand('copy');

        // 清理临时元素
        document.body.removeChild(textarea);

        if (!success) {
            throw new Error('execCommand 复制失败');
        }
        Message.success('复制成功');
        return true;

    } catch (error) {
        // 捕获所有可能的错误（权限不足、API 不支持等）
        Message.error('复制到剪贴板失败：'+ error);
        return false;
    }
};